Monitoring of processes that computers perform when implementing one or more applications is done to detect whether a process being performed is defective. For example, the process can result in an exception that disrupts the normal operation of the computer application, and a defective process may cause the application or computer system to eventually experience a non-functional or defective state. Thus, monitoring of the processes being performed allows the problem for a particular process to be detected, and a correction to the defective process may be more easily developed once the defective process is found.
Conventionally, various types of monitors for computer processes are packaged individually. As an example, a debugger monitor used to find processes generating exceptions is conventionally packaged separately from a window monitor that is used to detect events occurring within a window of a graphical user interface. If a particular monitor type is not responsive to the type of event that must be detected for a defective process, then another monitor package must be implemented. This creates an inconvenience for the programmer attempting to develop the solution to the defective process because multiple monitor packages may be required. Each monitor package may be implemented, either simultaneously or consecutively, on a computer experiencing a defective process until the appropriate monitor detects an event that reveals the defective process.
Furthermore, modern computers implement multiple processes simultaneously, and detecting which process being performed on a computer is the defective one requires that each process be monitored, either simultaneously or consecutively, until the defective process is found. As discussed above, monitoring packages providing a single monitor type are implemented simultaneously or consecutively for each process to be monitored. Therefore, the complexity of finding a defective process significantly increases when monitoring multiple processes on a computer.
Distributing processes of one or more applications among a set of networked computers is now possible due to the prevalence of local area networks (LANs), wide area networks (WANs), and the Internet and the development of distributed object models. However, finding defective processes of an application where the processes to be monitored are distributed among multiple computers adds significantly more complexity. Multiple monitoring packages may be utilized for each process of a computer, and this is done for each computer within the distribution. The results provided by each monitoring package must then be manually assimilated and analyzed by the programmer to determine which process of which computer is the defective one. The result is an overly complicated procedure for finding defective processes in the distributed system.